Implementación de un Modelo de Detección de Piedras Renales mediante YOLO

En este proyecto, implementamos un modelo de detección de piedras renales utilizando la arquitectura YOLO (You Only Look Once). La detección de objetos en imágenes es crucial para la identificación y tratamiento temprano de problemas de salud como cálculos renales. A continuación, se presenta una descripción detallada de la implementación. Nuestrio código se basa en el código utilizado por Osama Abido, en el cual hemos realizado ciertas modificaciones. A continuación se presenta el modelo.

Programadores: Ignacio Lorente, Jaime Martinez, Carlos González y Rodrigo de la Mata

Instructor: Alberto de Santos

Procesamiento de Imagenes Biomédicas. Universidad Francisco de Vitoria.

Instalación de paquetes y librerias necesarias

Importamos las imagenes y los labelsque utilizará nuestro modelo desde Google Drive, como hemos visto en clase.

Visualización Aleatoria de Etiquetas en Imágenes de Entrenamiento

En esta sección del código, se definen las rutas de los directorios que contienen las imágenes de entrenamiento, prueba y validación, así como sus etiquetas asociadas. Luego, se seleccionan aleatoriamente 16 imágenes de entrenamiento para proporcionar una representación visual de las detecciones de piedras renales. Cada imagen se carga junto con sus etiquetas, y se utilizan estas etiquetas para dibujar cuadros delimitadores alrededor de las áreas donde se encuentran las piedras renales. Esta visualización aleatoria facilita la comprensión de cómo el modelo interpreta y etiqueta las imágenes de entrenamiento, proporcionando una visión práctica de su desempeño en la detección de piedras renales en el conjunto de datos.

Configuración del Conjunto de Datos y Entrenamiento del modelo usando YOLO V8


En este fragmento del código, se carga un modelo preentrenado utilizando la arquitectura YOLO versión 8 (yolov8x.pt). A continuación, se inicia el proceso de entrenamiento del modelo. Se especifica la ruta al archivo YAML ('/content/archive/archivos/data.yaml').

El archivo YAML proporciona la configuración esencial para el entrenamiento del modelo. Aquí se detallan algunas observaciones clave:

Este archivo YAML actúa como una guía crucial para el modelo durante el proceso de entrenamiento, asegurando que el modelo comprenda la estructura de los datos, la cantidad de clases, y otros parámetros relevantes.

El modelo se entrena durante 50 épocas (epochs) con una tasa de aprendizaje inicial de 0.001. El valor de la semilla (seed) se fija en 42 para garantizar la reproducibilidad del entrenamiento. Este proceso es crucial para afinar el modelo a la tarea específica de detección de piedras renales, permitiendo que aprenda patrones y características relevantes de los datos de entrenamiento.

Detección de Piedras Renales en Imágenes Personalizadas

En esta sección, se define una función (ship_detect) que utiliza el modelo entrenado para realizar detecciones de piedras renales en imágenes personalizadas. Se seleccionan aleatoriamente 16 imágenes del conjunto de prueba, y se muestra el resultado de la detección para cada una en una cuadrícula de subtramas. Este proceso ilustra la capacidad del modelo para generalizar y detectar piedras renales en nuevas imágenes fuera del conjunto de entrenamiento.

Evaluación del modelo

Evaluacio IoU:

Tras realizar el modelo de evaluación IoU, hemos identificado algunas posibles razones detrás de los resultados que estamos obteniendo y hemos propuesto algunas soluciones para abordarlas.

En primer lugar, notamos que hay un problema con el formato de las coordenadas. Al extraer las coordenadas de las cajas reales, hemos utilizado una expresión que excluye la coordenada x_min, lo cual podría estar causando problemas en la alineación de las cajas durante el cálculo de IoU.

Además, al leer las coordenadas reales desde el archivo de etiquetas, hemos omitido el valor x_min, lo cual es crucial para asegurar un cálculo preciso de IoU y debe corregirse.

Otro punto importante es asegurarse de que las coordenadas de las cajas reales y las predichas tengan el mismo formato. Cualquier discrepancia en el formato (x_min, y_min, x_max, y_max) puede afectar los resultados de IoU.

Finalmente, es recomendable revisar la implementación de la función que calcula IoU para confirmar que está funcionando correctamente, teniendo en cuenta el formato adecuado de las coordenadas.

Para abordar estos problemas, proponemos corregir la extracción de coordenadas de las cajas reales para incluir todas las coordenadas (x_min, y_min, x_max, y_max), asegurarnos de que las coordenadas de las cajas reales y predichas tengan el mismo formato antes de calcular IoU, y verificar la carga de imágenes para garantizar que las dimensiones coincidan con las expectativas del modelo.

Evaluación Coco mAP50, mAP75 y mAP50-95.

Debido a las dificultades que enfrentamos al realizar la evaluación de IoU (Intersección sobre Unión), hemos optado por llevar a cabo una evaluación alternativa utilizando el conjunto de datos COCO. En lugar de depender únicamente de IoU, hemos calculado las métricas de precisión media (mAP) con diferentes umbrales, específicamente mAP50, mAP75 y mAP50-95.

Esta elección nos permite obtener una evaluación más completa y detallada del rendimiento de nuestro modelo en comparación con depender únicamente de un umbral de IoU específico. Aunque no hemos utilizado la evaluación tradicional de IoU, creemos que estas métricas proporcionan una imagen más robusta de la capacidad de nuestro modelo para realizar detecciones precisas en diferentes escenarios y niveles de superposición

Analisis de los resultados

El modelo que estamos evaluando muestra buenos resultados según varias métricas de evaluación, específicamente en términos de mAP (mean Average Precision). La métrica mAP50 es del 75.4%, lo que significa que el 75.4% de las predicciones realizadas por el modelo coinciden al menos en un 50% con la realidad. Este es un indicativo sólido de que el modelo tiene un rendimiento positivo en la detección de objetos.

Adicionalmente, se calculó el mAP50-95, que es del 34.4%. Este valor indica que el 34.4% de las predicciones del modelo coinciden en un rango más estricto, entre un 50% y un 95% de superposición con la verdad. Este rango más estrecho puede ser crucial en aplicaciones donde se requiere una alta precisión en las predicciones.

Otra métrica a considerar es el mAP75, que es del 20.6%. Este valor indica que el 20.6% de las predicciones coinciden en al menos un 75% con la realidad. Este valor es más restrictivo que el mAP50 y proporciona información sobre la capacidad del modelo para realizar predicciones precisas con un alto nivel de confianza.

Al analizar estos resultados, se sugiere que el modelo está funcionando bien. Además, se menciona que no se puede proporcionar un dato de IoU (Intersection over Union) concreto, pero se plantea la hipótesis de que el modelo no presenta overfitting. El argumento es que si hubiera overfitting, se esperaría que el mAP75 fuera mucho más alto. Esta inferencia se basa en la suposición de que un rendimiento demasiado alto en mAP75 podría indicar que el modelo está aprendiendo demasiado específicamente los datos de entrenamiento y no generalizando lo suficiente a nuevos datos. En este caso, el mAP75 del 20.6% sugiere que el modelo no está sobreajustando excesivamente a los datos de entrenamiento.

Conclusión del Modelo

En conclusión, el desarrollo y evaluación de nuestro modelo de detección de piedras renales con YOLO v8 ha arrojado resultados altamente prometedores. La capacidad mejorada del modelo para identificar eficazmente piedras renales, especialmente después de aumentar el número de épocas de entrenamiento, demuestra su capacidad para generalizar y detectar patrones incluso en situaciones desafiantes.

Las detecciones en una muestra aleatoria de imágenes de prueba revelan la consistencia y precisión del modelo al identificar piedras renales. La mejora en la detección, donde anteriormente no se observaban detecciones, subraya el progreso significativo logrado durante el desarrollo.

Las métricas de evaluación respaldan aún más el rendimiento del modelo, con un mAP50 del 75.4%, mAP50-95 del 34.4%, y mAP75 del 20.6%. Estos valores indican una alta concordancia entre las predicciones y la verdad, particularmente en el rango más estricto del mAP50-95, sugiriendo una precisión considerable en las predicciones del modelo.

La capacidad del modelo para no sobreajustar excesivamente a los datos de entrenamiento, como se evidencia por la baja tasa de mAP75, es una señal positiva de su habilidad para generalizar a nuevos datos. Aunque no se proporciona un valor específico de IoU, las métricas actuales respaldan la conclusión de que nuestro modelo presenta un rendimiento sólido y confiable en la tarea específica de detección de objetos, en este caso, la identificación de piedras renales.